package com.arpa.wms.mapper;

import com.arpa.wms.domain.dto.ContractDTO;
import com.arpa.wms.domain.entity.Contract;
import com.arpa.wms.domain.vo.ContractVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.List;

/**
 * <p>
 * 仓库计费合同 Mapper 接口
 * </p>
 *
 * @author LEO
 * @since 2020-11-17
 */
public interface ContractMapper extends BaseMapper<Contract> {

    /**
     * 查询列表
     * @param contractDTO
     * @return
     */
    List<ContractVO> queryList(ContractDTO contractDTO);

    /**
     * 查询合计,包含总数
     * @param contractDTO
     * @return
     */
    ContractVO queryListSum(ContractDTO contractDTO);


    /**
     * 根据合同code 批量更新合同状态
     * @param codes
     * @param status 状态
     * @return
     */
    int changeStatusByContractCodes(@Param("codes")List<String> codes,@Param("status")String status,@Param("groupCode") String groupCode);


    int checkExistsCount(@Param("warehouseCode") String warehouseCode,@Param("shipmentCode") String shipmentCode,
                         @Param("gmtEffective") LocalDate gmtEffective, @Param("gmtIneffective") LocalDate gmtIneffective);


    /**
     *  生成仓储费用排期
     */
    void generateBillingSchedule(@Param("sql") String sql);

    /**
     * 删除仓储费用排期
     * @param contractCode
     */
    void removeBillingSchedule(@Param("contractCode") String contractCode);


    /**
     * 获取机构下有效合同
     *
     * @param groupCode 机构code
     * @return
     */
    List<Contract> queryEffective(@Param("groupCode") String groupCode);
}
